package com.seecen.HJM.service;

import com.seecen.HJM.model.dto.PlaylistAddDTO;
import com.seecen.HJM.model.dto.PlaylistDTO;
import com.seecen.HJM.model.dto.PlaylistGetSongDto;
import com.seecen.HJM.model.dto.PlaylistUpdateDTO;
import com.seecen.HJM.model.entity.Playlist;
import com.baomidou.mybatisplus.extension.service.IService;
import com.seecen.HJM.model.entity.Song;
import com.seecen.HJM.model.vo.PlayListVo;
import com.seecen.HJM.model.vo.PlaylistDetailVO;
import com.seecen.HJM.result.DataVo;
import com.seecen.HJM.result.PageResult;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.validation.Valid;

import java.util.List;

/**
* @author jiachen
* @description 针对表【tb_playlist】的数据库操作Service
* @createDate 2025-09-26 14:09:53
 *
*/
public interface PlaylistService extends IService<Playlist> {
    //获取所有歌单
    DataVo<PageResult<PlayListVo>> getAllPlayLists(@Valid PlaylistDTO playlistDTO);
    // 获取所有歌单信息 不包含歌曲
    DataVo<PageResult<Playlist>> getAllPlaylistsInfo(PlaylistDTO playlistDTO);
    //随机获得歌单
    DataVo<List<PlayListVo>> getRecommendedPlaylists(HttpServletRequest request);

    //获取歌单详情
    DataVo<PlaylistDetailVO> getPlaylistDetail(Long playlistId, HttpServletRequest request);
    // 添加歌单
    DataVo addPlaylist(PlaylistAddDTO playlistAddDTO);

    // 更新歌单
    DataVo updatePlaylist(PlaylistUpdateDTO playlistUpdateDTO);

    // 更新歌单封面
    DataVo updatePlaylistCover(Long playlistId, String coverUrl);

    // 删除歌单
    DataVo deletePlaylist(Long playlistId);

    // 批量删除歌单
    DataVo deletePlaylists(List<Long> playlistIds);

}
